package br.trainee.web.dao.impl;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.inject.Inject;

import oracle.jdbc.internal.OracleTypes;
import br.trainee.web.anotacoes.ConnectionQualifier;
import br.trainee.web.enumeradores.TipoConexao;
import br.trainee.web.vo.EstadoVO;

public class EstadoDAO_OLD {
	
	@Inject
	@ConnectionQualifier(tipoConexao = TipoConexao.ORACLE)
	private Connection conexao;

	@Inject
	private Logger log;
	
	private CallableStatement cstm;
	
	private ResultSet rs;
	
	//@Override
	public List<EstadoVO> consultarTodos() {
		
		List<EstadoVO> listaEstado = new ArrayList<EstadoVO>();
		EstadoVO estado =  null;
		
		try {
			
			cstm = conexao.prepareCall("{call pr_consultar_estado(?)}");
			
			cstm.registerOutParameter(1, OracleTypes.CURSOR);
			
			if(!cstm.execute()){
				rs = (ResultSet) cstm.getObject(1);
				
				while(rs.next()){
					
					estado = new EstadoVO();
					
					estado.setIdEstado(rs.getLong("id_estado"));
					estado.setNomeEstado(rs.getString("nome_estado"));
					estado.setSiglaEstado(rs.getString("sigla_estado"));
					
					listaEstado.add(estado);
				}
			}
			
		
		} catch (SQLException e) {
			
			log.log(Level.SEVERE, e.getMessage());
			return null;
		}
		finally{
			
			try {
				conexao.close();
				cstm.close();
				if(rs != null){
					rs.close();
				}
				
			} catch (SQLException e) {
				log.log(Level.SEVERE, e.getMessage());
			}
		}
		
		return listaEstado;
	}

}
